<?php
/**
 * @defgroup database 数据库架构
 * 
 * QeePHP 数据库架构包含的主要组件分为三个级别。
 * 
 * 最底层的是适配器、事务等组件，提供直接操作数据库的能力，并且为更上层的组件提供服务；
 * 位于中间层次的则是表数据入口。表数据入口封装了对数据表的操作，既可以处理单独的记录，
 * 也可以高效得完成批量数据处理；最高层的 ActiveRecord 实际上应该算作领域层组件。
 * 但由于 ActiveRecord 和数据库操作紧密相关，所以还是把 ActiveRecord 放到数据库架构中来介绍。
 * 
 * @image html database-01.png
 * 
 * 从上图可以看出，ActiveRecord 依赖表数据入口提供的数据库操作功能，而表数据入口由借助更底层的组件来操作数据库。
 * 这种分层可以让开发者根据不同的需求选择合适的组件来解决问题，而不是用一个 all in one 的怪物来试图应付所有需求。
 *
 * <ul>
 *   <li><strong>适配器</strong><br />
 *       适配器是最底层的对象，用于为不同的数据库提供一个统一的接口。适配器好封装了结果集，
 *       以便上层组件能够利用统一的接口对查询结果集进行遍历。
 *   </li>
 *
 *   <li><strong>ActiveRecord</strong><br />
 *       ActiveRecord 表面上看封装了一个数据库记录。但 ActiveRecord 实际上是一个领域对象。
 *       ActiveRecord 封装了领域对象的属性和方法，并利用表数据入口来完成领域对象的持久化。
 *   </li>
 *   
 *   <li><strong>查询对象</strong><br />
 *       查询对象封装了一次数据库查询。查询对象提供方法链风格的接口，让开发者可以创建复杂的查询。
 *   </li>
 * 
 *   <li><strong>表数据入口</strong><br />
 *       表数据入口封装针对一个数据表的操作，是一个高层的数据库接口。
 *       表数据入口为 ActiveRecord 提供数据库的 CRUD 服务。表数据入口支持扩展插件，
 *       从而在表操作的层次透明的改变应用程序和框架行为。
 *   </li>
 * 
 *   <li><strong>表关联</strong><br />
 *       表关联封装了数据表之间的关联关系。表数据入口和 ActiveRecord 利用表关联对象来处理数据和对象间的关联操作。
 *   </li>
 * 
 *   <li><strong>事务</strong><br />
 *       QeePHP提供异常安全的事务管理机制。当启用一个事务后，该事务对象会处理未被应用程序捕获的异常，
 *       从而在异常发生时自动回滚事务。
 *   </li>
 * 
 *   <li><strong>表达式</strong><br />
 *       表达式用于封装一个数据库表达式，以便在查询对象以及其他数据库操作中使用。
 *   </li>
 * </ul>
 * 
 */
